is competitive programming necessary